[๐ ์ฌ์ดํด2 - ๋ฏธ์ (๋ธ๋์ญ ๊ฒ์ ์คํ)] ์ํฐ ๋ฏธ์ ์ ์ถํฉ๋๋ค.#1113
[๐ ์ฌ์ดํด2 - ๋ฏธ์
(๋ธ๋์ญ ๊ฒ์ ์คํ)] ์ํฐ ๋ฏธ์
์ ์ถํฉ๋๋ค.#1113ParkJiYeoung8297 wants to merge 78 commits intowoowacourse:parkjiyeoung8297from
Conversation
# Conflicts: # src/main/java/controller/BlackjackController.java # src/main/java/domain/BlackjackResult.java # src/main/java/domain/Dealer.java # src/main/java/domain/Player.java # src/main/java/domain/Players.java # src/main/java/service/BlackjackService.java # src/main/java/validator/Validator.java # src/main/java/view/InputView.java # src/main/java/view/OutputView.java # src/test/java/domain/BlackjackResultTest.java
jurlring
left a comment
There was a problem hiding this comment.
์ํฐ ์๋
ํ์ธ์ ๐ฐ
์ง๋ฌธ ์ฃผ์ ๋ถ๋ถ์ ๋ํ ์๊ฐ๋ค๊ณผ ์ฝ๋ฉํธ ๋ช๊ฐ์ง ๋จ๊ฒจ๋์์ด์.
์๊ฐ ๊ด์ฐฎ์ผ์ค ๋ ํ์ธํด์ฃผ์ธ์~!
์ฆ๊ฑฐ์ด ์ฃผ๋ง ๋์ธ์~~
| // 1. ์ฐธ๊ฐ์๋ค์ด ๋ชจ๋ burst๋ฉด ๋๋ฌ๊ฐ ์น๋ฆฌํ๋ค. | ||
| if (players.isAllPlayerBurst()) { | ||
| return getPlayersAllBurstCase(matchResult); | ||
| } | ||
| // 2. ๋๋ฌ๊ฐ burst์ด๋ฉด ์ด์๋จ์ ์ฐธ๊ฐ์๋ ์ฐ์น์ด๋ค. | ||
| if (dealer.isBust()) { | ||
| return getDealerBurstCase(matchResult); | ||
| } | ||
| // 3. ๋๋ฌ๊ฐ burst๊ฐ ์๋๋ฉด, ๋๋ฌ๋ณด๋ค ํฌ๋ฉด ์น, ์์ผ๋ฉด ํจ, ๊ฐ์๋ฉด ๋ฌด์น๋ถ์ด๋ค. | ||
| return getGeneralCase(matchResult); |
There was a problem hiding this comment.
์ฃผ์์ ๋ํด์๋ ์ด๋ป๊ฒ ์๊ฐํ์๋์~?
์ข์ ๋ค์ด๋ฐ๊ณผ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง ์ฝ๋๋ ์ฃผ์์ด ์์ด๋ ์ถฉ๋ถํ ์ดํด๋ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค :)
| () -> { | ||
| return inputView.readBettingPrice(name); | ||
| } |
There was a problem hiding this comment.
๊ดํธ๋ก ๋ฌถ์ ์ด์ ๊ฐ ์์๊น์~?
| import testutil.PlayerTestUtil; | ||
| import utils.generator.CardsGenerator; | ||
|
|
||
| class GameTest { |
There was a problem hiding this comment.
๋๋ฉ์ธ์ด ๋๊ฑฐ ์์ ๋๋, ํ ์คํธ ์ฝ๋๋ ๋ค์ ์์ ํด์ผํ๋ ์ํฉ์ด ๋ฐ์ํ์ต๋๋ค.
๋ณธ ์ฝ๋๋ ํ ์คํธ ์ฝ๋์ ์์กด์ฑ์ด ํฐ๊ฑฐ ๊ฐ์๋ฐ, ํ ์คํธ ์ฝ๋๊ฐ ๋ณ๊ฒฝ์ ์ ์ฐํ๊ฒ๋ ์์ฑํ๋ ๋ฐฉ๋ฒ์ด ์์๊น์?
์ ๋ ๋๋ฉ์ธ์ด ์์ ๋๋ฉด ํ
์คํธ ์ฝ๋๋ ํจ๊ป ์์ ๋๊ฑฐ๋ ๋ค์ ์์ฑ๋๋ ๊ฒ์ ์ด๋ ์ ๋ ์์ฐ์ค๋ฌ์ด ์ผ์ด๋ผ๊ณ ์๊ฐํด์~!
ํ
์คํธ ์ฝ๋๋ ์ ์ง์ผํ ๊น์? ํ
์คํธ ์ฝ๋๋ ๊ฒฐ๊ตญ ํ์ฌ ๋๋ฉ์ธ์ ๋์๊ณผ ์ ์ฑ
์ ๊ฒ์ฆํ๊ธฐ ์ํ ์ฝ๋์ด๊ธฐ ๋๋ฌธ์, ๋๋ฉ์ธ์ ๊ตฌ์กฐ๋ ์ ์ฑ
์ด ๋ณ๊ฒฝ๋๋ฉด ํ
์คํธ ์ญ์ ๊ทธ์ ๋ง๊ฒ ๋ณ๊ฒฝ๋๋ ๊ฒ์ด ๋ง๋ค๊ณ ์๊ฐํฉ๋๋ค.
ํ
์คํธ๋ฅผ ๋๋์๋ฉด ๊ฐ ๋๋ฉ์ธ์ ๋ํ ํ
์คํธ/์ข ๋ ํฐ ๋จ์์ ํ๋ฆ์ ๊ตฌ์ฑํ๋ ํด๋์ค์ ๋ํ ํ
์คํธ๊ฐ ์์ ๊ฒ ๊ฐ์๋ฐ์!
๊ฐ ๋๋ฉ์ธ์ ๋ํ ํ
์คํธ๋ ๋น์ฐํ ๋ณ๊ฒฝ๋์ด์ผํ๋๊ฒ ๋ง๋ ๊ฒ ๊ฐ๊ณ ํ๋ฆ์ ๊ตฌ์ฑํ๋ ํด๋์ค์ ๋ํ ํ
์คํธ๋ ์ธํฐํ์ด์ค์ ์ธ๋ถ ๋๋ฉ์ธ์ ๋ํ ์์กด์ ์ค์ด๋ฉด ํ
์คํธ ์ฝ๋๊ฐ ๋ณ๊ฒฝ์ ์ ์ฐํ๊ฒ๋ ์์ฑํ ์ ์์ด์!
| } | ||
| } | ||
|
|
||
| static int validateInteger(String input){ |
There was a problem hiding this comment.
์ ๊ทผ์ ํ์๋ ํ์ ์์๊น์?
| Player player = new Player("AAAA"); | ||
| public static Player createPlayer(String name, List<Card> cards) { | ||
| Player player = new Player(name); | ||
| cards.forEach(player::add); |
There was a problem hiding this comment.
stream์ forEach์ for๋ฌธ์ ์ด๋ค ์ฐจ์ด๊ฐ ์์๊น์?
| return players.stream().allMatch(Player::isBust); | ||
| } | ||
|
|
||
| public Player getPlayer(int index){ |
There was a problem hiding this comment.
ํ ์คํธ์์๋ง ์ฌ์ฉ๋๋ ๋ฉ์๋๋ก ๋ณด์ฌ์ ๐ฟ
| public void betMoney(int money) { | ||
| bettingScore = money; |
There was a problem hiding this comment.
ํ๋ ์ด์ด ์์ฑ ์์ ์ bettingScore๋ฅผ ์ด๊ธฐํ ํ๋ ๋ฐฉ๋ฒ์ ์์๊น์? ๊ทธ๋ผ ์ฅ์ ์ ์ด๋ค๊ฒ ์์๊น์?
| public MatchCase calculateMatchCase(int dealerTotal) { | ||
| if (cards.getFinalScore() > dealerTotal) { | ||
| return MatchCase.WIN; | ||
| } | ||
| if (cards.getFinalScore() == dealerTotal) { | ||
| return MatchCase.DRAW; | ||
| } | ||
| if (cards.getFinalScore() < dealerTotal) { | ||
| return MatchCase.LOSE; | ||
| } | ||
| throw new IllegalArgumentException("[ERROR] ์ผ์นํ๋ enum์ด ์์ต๋๋ค."); | ||
| } | ||
|
|
||
| private int calculateAceScore() { | ||
| if (!isAceExist() || calculateScore() > 11) { | ||
| return ACE_ADDITION_NONE_SCORE; | ||
| public void calculateMoney(MatchCase matchCase, boolean isDealerBlackjack) { | ||
| if (cards.isBlackjack() && !isDealerBlackjack) { | ||
| bettingScore = (int) ((int) bettingScore * Game.BLACKJACK_BONUS); | ||
| return; | ||
| } | ||
| if (matchCase.equals(MatchCase.LOSE)) { | ||
| loseMoney(); | ||
| return; | ||
| } | ||
|
|
||
| if (matchCase.equals(MatchCase.WIN)) { | ||
| return; | ||
| } |
There was a problem hiding this comment.
ํ๋ ์ด์ด๊ฐ ๋๋ฌด ๊ณผ๋ํ ์ฑ
์์ ๊ฐ์ง๊ฒ ์๋๊น์~?
๋จ์ผ์ฑ
์์์น์ ์งํค๊ณ ์์ง ์์๋ณด์ฌ์.
| import domain.dto.MatchResultDto; | ||
| import domain.enums.MatchCase; | ||
|
|
||
| public final class OutputView { |
There was a problem hiding this comment.
Dealer๋ฅผ ํ๋ ์ด์ด๋ก ์์ฑํ๊ฒ ๋ณ๊ฒฝ๋์ด, view๋จ์์ ๋๋ฉ์ธ ์ ์ฑ ์ ๋ํ ๊ตฌํ์ด ๋ค์ด๊ฐ๋ ๊ฒ ๊ฐ์์ ๐ฟ
There was a problem hiding this comment.
์ง๊ธ ๋๋ฉ์ธ ๊ท๋ชจ๋ฅผ ๋ณด์์ ๋๋ Aggregate Root๊น์ง ๋๋์ด ์ค๊ณํด์ผ ํ ์ ๋๋ก ๋ณต์กํ ๊ตฌ์กฐ๋ ์๋ ๊ฒ์ฒ๋ผ ๋ณด์
๋๋ค.
๊ทธ๋์ ๋ง์ํด์ฃผ์ ๊ฒ์ฒ๋ผ Game์ด ์ ์ฒด ํ๋ฆ์ ๊ฐ์ง๊ณ ์๋ ๊ตฌ์กฐ ์์ฒด๊ฐ ํฌ๊ฒ ์ด์ํด ๋ณด์ด์ง๋ ์์ต๋๋ค.
๋ณดํต Aggregate Root๋ ์ฌ๋ฌ ๊ฐ์ฒด๊ฐ ํ๋์ ์ผ๊ด์ฑ์ ์ ์งํ๋ฉด์ ํจ๊ป ๋ณ๊ฒฝ๋์ด์ผ ํ ๋ ๊ฒฝ๊ณ๋ฅผ ๋๋๊ธฐ ์ํด ์ฌ์ฉํ๋๋ฐ, ํ์ฌ ๋๋ฉ์ธ์์๋ ๊ทธ ์ ๋๋ก ํฐ ๊ฒฝ๊ณ๊ฐ ๋ณด์ด์ง ์๋ ๊ฒ ๊ฐ์์..! ๊ทธ๋์ ์ง๊ธ์ฒ๋ผ Game์ด ํ๋ ์ด์ด๋ค์ด๋ ๊ฒ์ ์งํ๊ณผ ๊ด๋ จ๋ ๊ฐ์ฒด๋ค์ ๊ด๋ฆฌํ๋ ๊ตฌ์กฐ๋ ์ถฉ๋ถํ ์์ฐ์ค๋ฌ์ ๋ณด์ ๋๋ค.
์ฌ์ดํด 2
๊ธฐ๋ฅ
์ฌ์ดํด1 ํผ๋๋ฐฑ ๋ฐ์
์ด๋ฒ ์์ ๊ณผ์ ์์ ์ ์ฒด ์นด๋๋ Deck์ด๋ผ๋ ๋๋ฉ์ธ์ ์ถ๊ฐํ๊ณ , Cards๋ Player๊ฐ ๋ค๊ณ ์๋ ์นด๋ ๋ญ์น๋ก ์ฌ์ฉํ์ต๋๋ค.
์ด๋ฅผ ํด๊ฒฐํ๊ณ ์ Player์ ๊ฒน์น๋ ํ๋์ Player์์ ์ฒ๋ฆฌํ๊ณ , ๋๋ฌ์ ๊ท์น์ ๊ณง ๊ฒ์์ ๊ท์น์ด๊ธฐ์ Game์์ ์ฒ๋ฆฌํ๋๋ก ๋ณ๊ฒฝํ์ต๋๋ค.
To ๋ฆฌ๋ทฐ์ด
1.Dealer - Player
๋๋ฌ์ ํ๋(ex. ์์ ์ด ๊ฐ์ง ์นด๋์ ํฉ ๊ตฌํ๊ธฐ)์ Player์ ์ค๋ณต์ด๊ณ ,
๋๋ฌ์ ๊ท์น(ex. 16์ดํ์ด๋ฉด ์นด๋๋ฅผ ์ถ๊ฐ๋ก ๋ฐ๋๋ค.)์ ๊ฒ์์ ๊ท์น์ด๊ธฐ์ Game์์ ์ฒ๋ฆฌํ ์ ์๋ค๊ณ ์๊ฐํ์ต๋๋ค.
๊ฐ์ฒด์์์ ์ฑ ์์ ํ์ค์ธ๊ณ์ ์ฐจ์ด๊ฐ ์์ด์, ๊ผญ ๋๋ฌ๊ฐ ํ๋ ํ๋์ด๋ผ๊ณ Dealer์ ์์ด์ผํ๋ ๊ฒ์ด ์๋๋ผ ์์ง๋๋ฅผ ๊ณ ๋ คํด ๋ค๋ฅธ ๊ณณ์ ์์นํ ์ ์๋ค๊ณ ์๊ฐํ๋๋ฐ, ์ด๋ฐ ๊ตฌ์กฐ๋ก ๊ตฌํํ๋ ๊ฒ์ ๋ํด ํผ๋๋ฐฑ ๋ฐ๊ณ ์ถ์ต๋๋ค.
(์ด๋ฐ ๊ตฌ์กฐ โ ์ฝ๋ ์ค๋ณต์ ์ค์ด๊ธฐ ์ํด Dealer ๊ฐ์ฒด๋ฅผ ์์ ๊ณ , ๊ด๋ จ ํ๋๊ณผ ๊ท์น์ ์ ์ ํ ํด๋์ค์ ๋๋ค)
Domain
์ง๊ธ ๋ณ๊ฒฝํ ๋๋ฉ์ธ ๊ตฌ์กฐ๊ฐ ์ ์ง์ฌ์ง ๊ฒ์ธ์ง ํผ๋๋ฐฑ ๋ฐ๊ณ ์ถ์ต๋๋ค. ์ด์ฐ๋ณด๋ฉด Game์ด aggregate root์ ๊ฐ๋ค๊ณ ๋ณด์ด๋๋ฐ, ์ด๋ฐ ๊ตฌ์กฐ๊ฐ ์ ์ ํ ๊น์?
ํ ์คํธ ์์
๋๋ฉ์ธ์ด ๋๊ฑฐ ์์ ๋๋, ํ ์คํธ ์ฝ๋๋ ๋ค์ ์์ ํด์ผํ๋ ์ํฉ์ด ๋ฐ์ํ์ต๋๋ค.
๋ณธ ์ฝ๋๋ ํ ์คํธ ์ฝ๋์ ์์กด์ฑ์ด ํฐ๊ฑฐ ๊ฐ์๋ฐ, ํ ์คํธ ์ฝ๋๊ฐ ๋ณ๊ฒฝ์ ์ ์ฐํ๊ฒ๋ ์์ฑํ๋ ๋ฐฉ๋ฒ์ด ์์๊น์?
์ฝ๋ ์์
์ด๋ฏธ ์ฌ์ฉ์ค์ธ ์๋น์ค์์๋ ์ด์ ๊ฐ์ด ๋๋ฉ์ธ์ ๋๊ฑฐ ์์ ํ๋ ๊ณผ์ ์ด ์ด๋ ค์ธ๊ฑฐ ๊ฐ์๋ฐ, ๋๊ฑฐ ์์ ์ด ํ์ํ ๊ฒฝ์ฐ ์ด๋ป๊ฒ ํด์ผํ๋์ง ๊ถ๊ธํฉ๋๋ค.
(ํ๋๋ฅผ ๊ณ ์น๋ฉด ์ฌ๋ฌ๊ฐ๊ฐ ์๋ฌ๋๋ ์ํฉ์ด๋ค ๋ณด๋, ์ ๋ ์ ๋ถ ์ฃผ์ํด๋๊ณ ์ฒ์๋ถํฐ ํ๋์ฉ ์ฃผ์์ ํด์ ํ๊ณ ๋ฌธ์ ํด๊ฒฐํ๋ ๋ฐฉ์์ผ๋ก ๋ฆฌํฉํ ๋งํ์ต๋๋ค.)
*ํผ๋๋ฐฑ์ ๋ฐ์ํ๋ ๊ณผ์ ์์ ๋๋ฉ์ธ ์ฌ๊ตฌ์ฑ์ด ํ์ํ๋ค๊ณ ์๊ฐํ์ต๋๋ค. ๊ทธ๋์ ๋ฆฌํฉํ ๋ง ๊ณผ์ ์์ ๋ง์ ํ์ผ์ด ๋ฐ๋์์ต๋๋ค.๐ฅฒ
*๊น์ ์ ๋๋ก ๋ชป ๋ง์ ธ์, ์ฌ์ดํด 1์ ์ปค๋ฐ ๋ด์ฉ๋ ์ ๋ถ ๋จ๋ ๊ฒ ๊ฐ์ต๋๋ค. (๋ณด๊ธฐ ํ๋์ค๊ฑฐ ๊ฐ์์ ์ฃ์กํฉ๋๋ค..)
*์ฌ์ดํด 1์์ ๋ฌ์์ฃผ์ ๋ฆฌ๋ทฐ ๋ต๊ธ์ 14์ผ(ํ )๋ด๋ก ์์ฑํด๋๊ฒ ์ต๋๋ค!
์ฌ์ดํด 1์ PR
๋งํฌ: #956
๋ฏธ์ ์ค ๊ธฐ๋ก
1. ๊ธฐ๋ฅ ์ถ๊ฐ๋ก ์ธํด ์์ ํ ์์น ๊ฐ์
๊ธฐ๋ฅ์ ์ถ๊ฐํ๋ ๊ณผ์ ์์ ํ์ฌ ๊ตฌ์กฐ๋ก ํ์ฅํ๊ธฐ์ ์ด๋ ค์์ด ์์๋ค.
๊ทธ๋์ ๋๋ถ๋ถ์ ๋น์ฆ๋์ค ๋ก์ง์ ๋๋ฉ์ธ ์์ผ๋ก ๋ฃ์ด์, ๋ณ๊ฒฝ์ ์ ์ฐํ๋๋ก ๋๋ฉ์ธ์ ์ฌ๊ตฌ์ฑํ์๋ค.
1)BlackjackResult์ญ์
์๋๋ BlackjackResult์์ ์นํจ์ ๊ฐ์ ๊ฒ์์ ๊ธฐ๋ก์ ์ ์ฅํ๋๋ฐ,
๋ฐฐํ ์๊ธ์ด๋ผ๋ ๊ฒฐ๊ณผ๊ฐ ํ๋ ๋ ์ถ๊ฐ ๋๋ฉด์, ์ถ๋ ฅ ๊ฒฐ๊ณผ(response)๋ฅผ ๋๋ฉ์ธ์ผ๋ก ๊ฐ๋ ๊ฒ์ ํ์ฅ์ฑ์ด ์์ข๋ค๊ณ ์๊ฐํ๋ค.
๊ทธ๋์ BlackjackResult๋ฅผ ์์ ๊ณ , Game์ด๋ผ๋ ๋๋ฉ์ธ์์ ๊ทธ๋๊ทธ๋ ์ํ๋ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ ์ ์๋๋ก ๋ฉ์๋๋ง ๊ตฌํํ์๋ค.
2)Deck ๋๋ฉ์ธ ์ถ๊ฐ, Cards ์ผ๊ธ ์ปฌ๋ ์ ์์
Cards๋ผ๋ ์ผ๊ธ ์ปฌ๋ ์ ์ ์นด๋ ์ ์ฒด(52์ฅ)๋ฅผ ํ๊น์ผ๋ก ์ฌ์ฉํ๋ค ๋ณด๋, Player๊ฐ ๊ฐ๋ ์นด๋ ๋๋ฏธ๋ Cards๋ฅผ ์ฌ์ฉํ์ง ๋ชปํ๋ค.
์ ์ฒด ์นด๋๋ ๋๋ค ์์ฑ, ์นด๋ ์ถ์ถ ๊ธฐ๋ฅ์ ๋ํ ์ฑ ์๋ง ๊ฐ์ง๊ธฐ ๋๋ฌธ์ ํ๋ ์ด์ด๊ฐ ๊ฐ์ง๋ ์นด๋ ๋ญ์น Cards์ ๋ฐ๋ก ๋ถ๋ฆฌํ๋ ๊ฒ์ด ๋ซ๋ค๊ณ ์๊ฐํ๋ค.
๊ทธ๋์ Player๊ฐ ์์ ํ ์นด๋ ๋ญ์น๋ฅผ Cards๋ผ๋ ์ผ๊ธ ์ปฌ๋ ์ ์ผ๋ก ์ฌ์ฉํ๊ธฐ ์ํด, ์ ์ฒด ์นด๋๋ฅผ ๋ํ๋ด๋ Deck์ด๋ผ๋ ๋๋ฉ์ธ์ ์ถ๊ฐํ์๋ค.
CardGenerator๋ฅผ ํ๋ผ๋ฏธํฐ๋ก ๋ฐ์์ ์ ์ฒด ์นด๋ ์์ฑ์ ๊ดํด์ Deck์์ ์ฒ๋ฆฌํ๋๋ก ํ์๋ค.
์นด๋ ์์ฑ์ ์ ๋ฒ์ ์ธํฐํ์ด์ค๋ก ํด์ ๋ถ๋ฆฌํ๋ ์ด๋ถ๋ถ์ ๋ํ ์์ ์ ํธ๋ฆฌํ๋ค.
(CardGenerator๋ฅผ ํ๋ผ๋ฏธํฐ๋ก ๋ฐ์์ ๋ฉ์๋๋ก๋ง ํธ์ถํ๋ฉด ๋๋๊น.)
4)Game ๋๋ฉ์ธ ์ถ๊ฐ, Dealer ๋๋ฉ์ธ ์ญ์
Game์ ๋ํ ๋น์ฆ๋์ค ๋ก์ง์ด๋ ๊ท์น๋ค์ด Player, Dealer, Cards ๋ฑ์ ํฉ์ด์ ธ์์ด ํ ์คํธ ์ฝ๋ ์์ฑ์ ์ด๋ ค์์ด ์์๋ค.
๋ฐ๋ผ์, ๋ธ๋์ญ ๊ฒ์ ๊ท์น์ ๋ํ ๋ฉ์๋๋ฅผ ๋ชจ์๋๊ธฐ ์ํด Game์ด๋ผ๋ ๋๋ฉ์ธ์ ์ถ๊ฐํ์๋ค.
Game์ ์ถ๊ฐํ๊ณ ๋๋ Dealer์ ํ๋๋ Player์ ๊ฒน์น๊ณ , Dealer์ ๊ท์น์ Game์์ ์ํํ ์ ์์ ๊ฒ์ผ๋ก ๋ณด์๋ค.
(16์ดํ์ด๋ฉด ์นด๋๋ฅผ ๋ ๋ฐ๋๋ค๋ Dealer์ ๊ท์น์ ๊ฒ์์ ๊ท์น์ด๋ผ๊ณ ๋ณผ ์๋ ์๊ธฐ ๋๋ฌธ์ด๋ค.)
Game๊ณผ Dealer๋ ํญ์ 1๋ 1๋ก ์กด์ฌํ๊ธฐ ๋๋ฌธ์, ๊ฐ์ฒด ์์ฑ-์๋ฉธ ์ฃผ๊ธฐ๊ฐ ๊ฐ๋ค๊ณ ํ๋จํ์ฌ ๊ด๋ จ ๋ก์ง์ Game์ ๋์๋ค.
์ถ๊ฐ๋ก Dealer๋ ๊ฒ์์ ๋ง๋ค ๋ ์ธ๋ถ์์ ์ฃผ์ ํด์ฃผ๋ ๋ฐฉ์์ผ๋ก ํ๋ค. ๊ทธ๋์ผ GameTest์์ Dealer์ ์นด๋๋ฅผ ์กฐ์ํด์ค ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
ํ ์คํธ๋ฅผ ์์ฑํ๋ฉฐ ์์กด์ฑ์ ์ค์ด๋ ๋ฐฉํฅ์ผ๋ก ๊ฐ๋ฐ์ ํ๊ฒ ๋์๋ค.
2. ์ฌ์ดํด1 ๋๋ณด๋ค ์์ ๋ฒ์๊ฐ ์ค์๋๊ฐ/๋์๋๊ฐ
์ฌ์ดํด 1์์ ๋จํธ์ ์ธ ๊ฒฐ๊ณผ ์ถ๋ ฅ์๋ง ์ง์คํด์ ๋๋ฉ์ธ์ ์ค๊ณํด์ ๊ทธ๋ฐ์ง, ๊ธฐ๋ฅ ์ถ๊ฐ๋ฅผ ์ํด ์ฝ๋ ๋ณ๊ฒฝ์ด ๋ง๋งํ๊ณ ์ด๋ ค์ ๋ค.
๊ทธ๋์ ๋๋ฉ์ธ์ ์ฌ๊ตฌ์ฑํ์๊ธฐ ๋๋ฌธ์, ์ฌ์ดํด1 ๋๋ณด๋ค ์์ ๋ฒ์๊ฐ ํจ์ฌ ์ปธ๋ค.
๋ณ๊ฒฝ๋ ๊ตฌ์กฐ์์๋ ๊ธฐ๋ฅ ์ถ๊ฐ ์ Game์ ์ฝ๋๋ฅผ ์ถ๊ฐํ๋ฉด ๋๊ธฐ ๋๋ฌธ์, ์ฝ๋ ๋ณ๊ฒฝ์ด ์ ์ ๊ฒ์ผ๋ก ์์๋๋ค.
3. ๊ท์น ์ ์ฉ์ผ๋ก ๋ณ๊ฒฝํ ์ฝ๋ 1๊ณณ
(If-Then) ํ๋์ฝ๋ฉ๋ ๊ฐ์ด ๋ณด์ธ๋ค๋ฉด, โ ์์ํํ๋ค.
๋๋ฉ์ธ์ผ๋ก ๋ก์ง์ ์ด๋ํ๋ฉด์, ์์๋ ์ ์ ํ ๋๋ฉ์ธ์ผ๋ก ์ด๋ํด ์์ง์ฑ ์๊ฒ ์์ ํ์๋ค.
(If-Then) ๊ฐ์ ๊ฐ์ฒด๋ฅผ ๋ค๋ฃจ๋ ํด๋์ค์ฌ๋ ๋ชฉ์ ์ด ๋ค๋ฅด๋ฉด, โ ํด๋์ค๋ฅผ ๋ถ๋ฆฌํ๋ค. (e.g. Cards -> Deck, Hand)
Cards๋ฅผ Cards(Player ์์ ์นด๋), Deck(์ ์ฒด์นด๋)์ผ๋ก ๋๋์ด์ ๋ฆฌํฉํ ๋งํ์๋ค.
4. ํ ์คํธ๊ฐ ์ค๊ณ๋ฅผ ๋์ด ์๊ฐ 1ํ
๊ฒ์ ๊ท์น์ ๋ํ ํ ์คํธ๋ฅผ ์งํํ๋ ค๊ณ ํ๋๋ฐ,
์ด๋ฐ ๊ท์น์ด Player, Dealer, Cards ๋ฑ ์ฌ๋ฌ ๋๋ฉ์ธ์ ๊ฑธ์ณ์ ์กด์ฌํ๋ ๊ฒ์ด ๋ถํธํ๋ค.
ํ ์คํธ ๊ตฌํ์ ํตํด ๋๋ฉ์ธ์ ์ฑ ์ ๋ถ๋ฆฌ์ ๋ํ ์ฌ๊ตฌ์ฑ ํ์ ์ ํธ๋ฅผ ํฌ์ฐฉํ ์ ์์ด์ ์ค๊ณ์ ๋์์ด ๋์๋ค.
์ฒดํฌ ๋ฆฌ์คํธ
test๋ฅผ ์คํํ์ ๋, ๋ชจ๋ ํ ์คํธ๊ฐ ์ ์์ ์ผ๋ก ํต๊ณผํ๋์?